iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0
Mobile Development

30天輕鬆學會unity自製遊戲系列 第 9

30天輕鬆學會unity自製遊戲-製作敵人

  • 分享至 

  • xImage
  •  

暫定為手機遊戲,那就讓基本子彈自動射擊(手機操控不意,讓玩家只做簡易核心的操作就好) ,先把上一篇製作好的子彈加在Player上,開啟PlayerControl來多加幾行

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerControl : MonoBehaviour
{
    private Animator anim;
    private Rigidbody2D rig;
    [SerializeField]float speed = 5f;
//序列化一個物件名叫buller預設為空值(null)
    [SerializeField] GameObject bullet = null;
    float horizontalMove;
    private void Start()
    {
        anim = GetComponent<Animator>();
        rig = GetComponent<Rigidbody2D>();
//反覆的呼叫"Attack"一秒後開始,反覆時間為一秒
        InvokeRepeating("Attack", 1f, 1f);
    }
    private void Update()
    {
        horizontalMove = Input.GetAxisRaw("Horizontal");
    }
    private void FixedUpdate()
    {
        Move();
        
    }
    void Move()
    {
        
        rig.velocity =
           new Vector2(horizontalMove * speed, rig.velocity.y);
        if (horizontalMove > 0.2f)
        {
            anim.SetBool("right",true);
            
        }

        if (horizontalMove < -0.2f)
        {
            
            anim.SetBool("left", true);
        }
        if(horizontalMove < 0.2f && horizontalMove > -0.2f)
        {
            anim.SetBool("right", false);
            anim.SetBool("left", false);

        }
    }
//新增一個Attack 
    void Attack()
    {
		//生成物件(bullet(物件名稱),物件位置,物件角度)
        Instantiate(bullet,transform.position,Quaternion.identity);
    }


}

回到unity上要記得把子彈裝到Player上,點選預置物的子彈(要用project裡的,場景上的還是算物件)拖曳到player程式上的bullet即可
https://ithelp.ithome.com.tw/upload/images/20210909/20140598sPBeyrjjxB.png

接下來放一個敵人,從最小的開始放,放上後也記的給剛體跟碰撞器,記得改一下剛體的重力跟碰撞器的大小,最後給敵人也新增一個程式,暫定EnemyAI,開啟EnemyAI程式稍微編輯一下
https://ithelp.ithome.com.tw/upload/images/20210909/20140598fW4oIGSQwD.png

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class EnemyAI : MonoBehaviour
{
	//序列化一個速度 先給數值3
    [SerializeField] float speed = 3f;
	//給一個向右的布林值
    bool right;
    //開始
    void Start()
    {
		//一個始設定向右走
        right = true;
        
    }
	//持續
    void Update()
    {
//移動	
        Move();
    }
	//新增一個Move
     void Move()
    {
        //如果right不是ture(或寫成right==false)
        if (!right)
        { 
			//位置的轉換(速度*(-1)*時間.差量時間,0,0)
            transform.Translate(speed * -1 * Time.deltaTime, 0, 0);
			//如果(物件的X位置小於等於0.5)
            if (gameObject.transform.position.x <= 0.5)
			//向右的布林值=true
            right = true;
        }
//如果right是ture(或寫成right==true)
        if (right)
        { 
			//位置的轉換(速度*(1)*時間.差量時間,0,0)
            transform.Translate(speed * 1 * Time.deltaTime, 0, 0);
			//如果(物件的X位置大於等於5.5)
            if (gameObject.transform.position.x >=5.5)
			//向右的布林值=false
            right = false;
        }


    }
}

現在就能有個自動發射子彈的Player跟一個會左右移動的敵人,下一篇再來讓他們互相傷害囉~


上一篇
30天輕鬆學會unity自製遊戲-製作子彈
下一篇
30天輕鬆學會unity自製遊戲-傷害敵人
系列文
30天輕鬆學會unity自製遊戲30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言